package com.cloud.api.domain.tsp;

import com.baomidou.mybatisplus.annotation.TableField;
import com.cloud.api.domain.custom.*;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;

/**
 * @author 杨斌
 * 2025-04-2025-04-18
 */
@Data
@Schema(name = "VehicleCustomStatus")
public class VehicleCustomStatus {

    private  String vin;

    // 自定义内容数据长度（数据内容长度 36）
    @TableField("custom_data_length")
    @Schema(description = "自定义内容数据长度（数据内容长度 36）")
    private Short customDataLength;

    // 自定义ST86软件版本
    @TableField("st86_version")
    @Schema(description = "自定义ST86软件版本")
    private Short st86Version;

    // 自定义STM32软件版本(HEX)
    @TableField("stm32_version")
    @Schema(description = "自定义STM32软件版本(HEX)")
    private Short stm32Version;

    // 设备版本号（2字节，仅用作升级使用(ST86低8位，STM32高8位)）
    @TableField("device_version")
    @Schema(description = "设备版本号（2字节，仅用作升级使用(ST86低8位，STM32高8位)）")
    private Integer deviceVersion;

    // 用户代码（用来区分用户类别，详见附录C）
    @TableField("user_code")
    @Schema(description = "用户代码（用来区分用户类别，详见附录C）")
    private Integer userCode;

    // 车型代码（不同客户的车型信息，详见附录C）
    @TableField("vehicle_code")
    @Schema(description = "车型代码（不同客户的车型信息，详见附录C）")
    private Integer vehicleCode;

    // 锁车状态（锁车: 1；未锁车:0；0xFE:锁车故障;0xFF:无效）
    @TableField("lock_status")
    @Schema(description = "锁车状态（锁车: 1；未锁车:0；0xFE:锁车故障;0xFF:无效）")
    private LockStatusEnum lockStatus;

    // Can状态（连接断开: 1；连接正常:0）
    @TableField("can_status")
    @Schema(description = "Can状态（连接断开: 1；连接正常:0）")
    private CanStatusEnum canStatus;

    // 天线状态（故障: 1；正常:0）
    @TableField("antenna_status")
    @Schema(description = "天线状态（故障: 1；正常:0）")
    private AntennaStatusEnum antennaStatus;

    // 断电状态（断电: 1；正常:0）
    @TableField("power_off_status")
    @Schema(description = "断电状态（断电: 1；正常:0）")
    private PowerOffStatusEnum powerOffStatus;

    // SD卡状态（故障: 1；正常:0）
    @TableField("sd_card_status")
    @Schema(description = "SD卡状态（故障: 1；正常:0）")
    private SdCardStatusEnum sdCardStatus;

    // 行驶方向（航向角）
    @TableField("driving_direction")
    @Schema(description = "行驶方向（航向角）")
    private Integer drivingDirection;

    // 锁车使能状态（0x5A表示不支持锁车；0x7E表示支持锁车；0xFF：无效）
    @TableField("lock_enable_status")
    @Schema(description = "锁车使能状态（0x5A表示不支持锁车；0x7E表示支持锁车；0xFF：无效）")
    private LockEnableStatusEnum lockEnableStatus;

    // 充电循环次数（1次/位,0xFFFF无效）
    @TableField("charging_cycle_count")
    @Schema(description = "充电循环次数（1次/位,0xFFFF无效）")
    private Integer chargingCycleCount;

    // 累计充电电量（取值范围:0-1000000000，分辨率0.1；0xFFFFFFFF:无效）
    @TableField("accumulated_charging_energy")
    @Schema(description = "累计充电电量（取值范围:0-1000000000，分辨率0.1；0xFFFFFFFF:无效）")
    private Long accumulatedChargingEnergy;

    // 设备累计工作时间（单位s; 分辨率1;范围:0~0xfffffffe; 0xffffffff表示无效）
    @TableField("accumulated_working_time")
    @Schema(description = "设备累计工作时间（单位s; 分辨率1;范围:0~0xfffffffe; 0xffffffff表示无效）")
    private String accumulatedWorkingTime;

    // 累计gps里程（单位km; 分辨率0.1;范围:0~0xfffffffe; 0xffffffff表示无效）
    @TableField("accumulated_gps_mileage")
    @Schema(description = "累计gps里程（单位km; 分辨率0.1;范围:0~0xfffffffe; 0xffffffff表示无效）")
    private Long accumulatedGpsMileage;

    // 存储器(SD/Flash)总容量（单位:MB; 分辨率1 0xffff表示无效）
    @TableField("total_storage_capacity")
    @Schema(description = "存储器(SD/Flash)总容量（单位:MB; 分辨率1 0xffff表示无效）")
    private String totalStorageCapacity;

    // 存储器(SD/Flash)剩余容量（单位:MB; 分辨率1 0xffff表示无效）
    @TableField("remaining_storage_capacity")
    @Schema(description = "存储器(SD/Flash)剩余容量（单位:MB; 分辨率1 0xffff表示无效）")
    private String remainingStorageCapacity;

    // GPS信号强度（范围:1~5   (包括5，值越大，信号值越差，其他值表示未知或不可测)
    @TableField("gps_signal_strength")
    @Schema(description = "GPS信号强度（范围:1~5   (包括5，值越大，信号值越差，其他值表示未知或不可测)")
    private String gpsSignalStrength;

    // GSM信号强度（范围:5~31  （包括31，值越大，信号值越好。其他值，表示未知或不可测）
    @TableField("gsm_signal_strength")
    @Schema(description = "GSM信号强度（范围:5~31  （包括31，值越大，信号值越好。其他值，表示未知或不可测）")
    private String gsmSignalStrength;
    // 密钥锁车状态（密钥锁车反馈状态：0：解锁；1：锁车中 2：已锁车）
    private KeyLockStatusEnum keyLockStatus;

    // 密钥（3字节）
    @TableField("key_lock")
    @Schema(description = "密钥（3字节）")
    private String keyLock;
}
